package fr.upmc.pstl.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import fr.upmc.pstl.services.MyDslGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalMyDslParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_ID", "RULE_STRING", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'type'", "'is'", "';'", "','", "'..'"
    };
    public static final int RULE_ID=4;
    public static final int RULE_STRING=5;
    public static final int T__15=15;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_ANY_OTHER=10;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;

    // delegates
    // delegators


        public InternalMyDslParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalMyDslParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalMyDslParser.tokenNames; }
    public String getGrammarFileName() { return "../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g"; }



     	private MyDslGrammarAccess grammarAccess;
     	
        public InternalMyDslParser(TokenStream input, MyDslGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "Model";	
       	}
       	
       	@Override
       	protected MyDslGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleModel"
    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:67:1: entryRuleModel returns [EObject current=null] : iv_ruleModel= ruleModel EOF ;
    public final EObject entryRuleModel() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleModel = null;


        try {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:68:2: (iv_ruleModel= ruleModel EOF )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:69:2: iv_ruleModel= ruleModel EOF
            {
             newCompositeNode(grammarAccess.getModelRule()); 
            pushFollow(FOLLOW_ruleModel_in_entryRuleModel75);
            iv_ruleModel=ruleModel();

            state._fsp--;

             current =iv_ruleModel; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleModel85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleModel"


    // $ANTLR start "ruleModel"
    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:76:1: ruleModel returns [EObject current=null] : ( (lv_elements_0_0= ruleType ) )* ;
    public final EObject ruleModel() throws RecognitionException {
        EObject current = null;

        EObject lv_elements_0_0 = null;


         enterRule(); 
            
        try {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:79:28: ( ( (lv_elements_0_0= ruleType ) )* )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:80:1: ( (lv_elements_0_0= ruleType ) )*
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:80:1: ( (lv_elements_0_0= ruleType ) )*
            loop1:
            do {
                int alt1=2;
                int LA1_0 = input.LA(1);

                if ( (LA1_0==11) ) {
                    alt1=1;
                }


                switch (alt1) {
            	case 1 :
            	    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:81:1: (lv_elements_0_0= ruleType )
            	    {
            	    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:81:1: (lv_elements_0_0= ruleType )
            	    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:82:3: lv_elements_0_0= ruleType
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getModelAccess().getElementsTypeParserRuleCall_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleType_in_ruleModel130);
            	    lv_elements_0_0=ruleType();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getModelRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"elements",
            	            		lv_elements_0_0, 
            	            		"Type");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop1;
                }
            } while (true);


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleModel"


    // $ANTLR start "entryRuleType"
    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:106:1: entryRuleType returns [EObject current=null] : iv_ruleType= ruleType EOF ;
    public final EObject entryRuleType() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleType = null;


        try {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:107:2: (iv_ruleType= ruleType EOF )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:108:2: iv_ruleType= ruleType EOF
            {
             newCompositeNode(grammarAccess.getTypeRule()); 
            pushFollow(FOLLOW_ruleType_in_entryRuleType166);
            iv_ruleType=ruleType();

            state._fsp--;

             current =iv_ruleType; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleType176); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleType"


    // $ANTLR start "ruleType"
    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:115:1: ruleType returns [EObject current=null] : (otherlv_0= 'type' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'is' ( (lv_specification_3_0= ruleSpec ) ) otherlv_4= ';' ) ;
    public final EObject ruleType() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_name_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        EObject lv_specification_3_0 = null;


         enterRule(); 
            
        try {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:118:28: ( (otherlv_0= 'type' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'is' ( (lv_specification_3_0= ruleSpec ) ) otherlv_4= ';' ) )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:119:1: (otherlv_0= 'type' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'is' ( (lv_specification_3_0= ruleSpec ) ) otherlv_4= ';' )
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:119:1: (otherlv_0= 'type' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'is' ( (lv_specification_3_0= ruleSpec ) ) otherlv_4= ';' )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:119:3: otherlv_0= 'type' ( (lv_name_1_0= RULE_ID ) ) otherlv_2= 'is' ( (lv_specification_3_0= ruleSpec ) ) otherlv_4= ';'
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleType213); 

                	newLeafNode(otherlv_0, grammarAccess.getTypeAccess().getTypeKeyword_0());
                
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:123:1: ( (lv_name_1_0= RULE_ID ) )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:124:1: (lv_name_1_0= RULE_ID )
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:124:1: (lv_name_1_0= RULE_ID )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:125:3: lv_name_1_0= RULE_ID
            {
            lv_name_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleType230); 

            			newLeafNode(lv_name_1_0, grammarAccess.getTypeAccess().getNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTypeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleType247); 

                	newLeafNode(otherlv_2, grammarAccess.getTypeAccess().getIsKeyword_2());
                
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:145:1: ( (lv_specification_3_0= ruleSpec ) )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:146:1: (lv_specification_3_0= ruleSpec )
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:146:1: (lv_specification_3_0= ruleSpec )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:147:3: lv_specification_3_0= ruleSpec
            {
             
            	        newCompositeNode(grammarAccess.getTypeAccess().getSpecificationSpecParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleSpec_in_ruleType268);
            lv_specification_3_0=ruleSpec();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getTypeRule());
            	        }
                   		set(
                   			current, 
                   			"specification",
                    		lv_specification_3_0, 
                    		"Spec");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_4=(Token)match(input,13,FOLLOW_13_in_ruleType280); 

                	newLeafNode(otherlv_4, grammarAccess.getTypeAccess().getSemicolonKeyword_4());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleType"


    // $ANTLR start "entryRuleSpec"
    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:175:1: entryRuleSpec returns [EObject current=null] : iv_ruleSpec= ruleSpec EOF ;
    public final EObject entryRuleSpec() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSpec = null;


        try {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:176:2: (iv_ruleSpec= ruleSpec EOF )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:177:2: iv_ruleSpec= ruleSpec EOF
            {
             newCompositeNode(grammarAccess.getSpecRule()); 
            pushFollow(FOLLOW_ruleSpec_in_entryRuleSpec316);
            iv_ruleSpec=ruleSpec();

            state._fsp--;

             current =iv_ruleSpec; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSpec326); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSpec"


    // $ANTLR start "ruleSpec"
    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:184:1: ruleSpec returns [EObject current=null] : ( ( (lv_interval_0_0= ruleInterval ) ) | ( (lv_enumeration_1_0= ruleEnum ) ) ) ;
    public final EObject ruleSpec() throws RecognitionException {
        EObject current = null;

        EObject lv_interval_0_0 = null;

        EObject lv_enumeration_1_0 = null;


         enterRule(); 
            
        try {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:187:28: ( ( ( (lv_interval_0_0= ruleInterval ) ) | ( (lv_enumeration_1_0= ruleEnum ) ) ) )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:188:1: ( ( (lv_interval_0_0= ruleInterval ) ) | ( (lv_enumeration_1_0= ruleEnum ) ) )
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:188:1: ( ( (lv_interval_0_0= ruleInterval ) ) | ( (lv_enumeration_1_0= ruleEnum ) ) )
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==RULE_INT) ) {
                alt2=1;
            }
            else if ( (LA2_0==RULE_STRING) ) {
                alt2=2;
            }
            else {
                NoViableAltException nvae =
                    new NoViableAltException("", 2, 0, input);

                throw nvae;
            }
            switch (alt2) {
                case 1 :
                    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:188:2: ( (lv_interval_0_0= ruleInterval ) )
                    {
                    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:188:2: ( (lv_interval_0_0= ruleInterval ) )
                    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:189:1: (lv_interval_0_0= ruleInterval )
                    {
                    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:189:1: (lv_interval_0_0= ruleInterval )
                    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:190:3: lv_interval_0_0= ruleInterval
                    {
                     
                    	        newCompositeNode(grammarAccess.getSpecAccess().getIntervalIntervalParserRuleCall_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleInterval_in_ruleSpec372);
                    lv_interval_0_0=ruleInterval();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getSpecRule());
                    	        }
                           		set(
                           			current, 
                           			"interval",
                            		lv_interval_0_0, 
                            		"Interval");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;
                case 2 :
                    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:207:6: ( (lv_enumeration_1_0= ruleEnum ) )
                    {
                    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:207:6: ( (lv_enumeration_1_0= ruleEnum ) )
                    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:208:1: (lv_enumeration_1_0= ruleEnum )
                    {
                    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:208:1: (lv_enumeration_1_0= ruleEnum )
                    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:209:3: lv_enumeration_1_0= ruleEnum
                    {
                     
                    	        newCompositeNode(grammarAccess.getSpecAccess().getEnumerationEnumParserRuleCall_1_0()); 
                    	    
                    pushFollow(FOLLOW_ruleEnum_in_ruleSpec399);
                    lv_enumeration_1_0=ruleEnum();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getSpecRule());
                    	        }
                           		set(
                           			current, 
                           			"enumeration",
                            		lv_enumeration_1_0, 
                            		"Enum");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }


                    }
                    break;

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSpec"


    // $ANTLR start "entryRuleEnum"
    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:233:1: entryRuleEnum returns [EObject current=null] : iv_ruleEnum= ruleEnum EOF ;
    public final EObject entryRuleEnum() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleEnum = null;


        try {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:234:2: (iv_ruleEnum= ruleEnum EOF )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:235:2: iv_ruleEnum= ruleEnum EOF
            {
             newCompositeNode(grammarAccess.getEnumRule()); 
            pushFollow(FOLLOW_ruleEnum_in_entryRuleEnum435);
            iv_ruleEnum=ruleEnum();

            state._fsp--;

             current =iv_ruleEnum; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleEnum445); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleEnum"


    // $ANTLR start "ruleEnum"
    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:242:1: ruleEnum returns [EObject current=null] : ( () (this_STRING_1= RULE_STRING (otherlv_2= ',' this_STRING_3= RULE_STRING )* ) ) ;
    public final EObject ruleEnum() throws RecognitionException {
        EObject current = null;

        Token this_STRING_1=null;
        Token otherlv_2=null;
        Token this_STRING_3=null;

         enterRule(); 
            
        try {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:245:28: ( ( () (this_STRING_1= RULE_STRING (otherlv_2= ',' this_STRING_3= RULE_STRING )* ) ) )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:246:1: ( () (this_STRING_1= RULE_STRING (otherlv_2= ',' this_STRING_3= RULE_STRING )* ) )
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:246:1: ( () (this_STRING_1= RULE_STRING (otherlv_2= ',' this_STRING_3= RULE_STRING )* ) )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:246:2: () (this_STRING_1= RULE_STRING (otherlv_2= ',' this_STRING_3= RULE_STRING )* )
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:246:2: ()
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:247:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getEnumAccess().getEnumAction_0(),
                        current);
                

            }

            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:252:2: (this_STRING_1= RULE_STRING (otherlv_2= ',' this_STRING_3= RULE_STRING )* )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:252:3: this_STRING_1= RULE_STRING (otherlv_2= ',' this_STRING_3= RULE_STRING )*
            {
            this_STRING_1=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEnum491); 
             
                newLeafNode(this_STRING_1, grammarAccess.getEnumAccess().getSTRINGTerminalRuleCall_1_0()); 
                
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:256:1: (otherlv_2= ',' this_STRING_3= RULE_STRING )*
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==14) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:256:3: otherlv_2= ',' this_STRING_3= RULE_STRING
            	    {
            	    otherlv_2=(Token)match(input,14,FOLLOW_14_in_ruleEnum503); 

            	        	newLeafNode(otherlv_2, grammarAccess.getEnumAccess().getCommaKeyword_1_1_0());
            	        
            	    this_STRING_3=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleEnum514); 
            	     
            	        newLeafNode(this_STRING_3, grammarAccess.getEnumAccess().getSTRINGTerminalRuleCall_1_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop3;
                }
            } while (true);


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleEnum"


    // $ANTLR start "entryRuleInterval"
    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:272:1: entryRuleInterval returns [EObject current=null] : iv_ruleInterval= ruleInterval EOF ;
    public final EObject entryRuleInterval() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleInterval = null;


        try {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:273:2: (iv_ruleInterval= ruleInterval EOF )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:274:2: iv_ruleInterval= ruleInterval EOF
            {
             newCompositeNode(grammarAccess.getIntervalRule()); 
            pushFollow(FOLLOW_ruleInterval_in_entryRuleInterval552);
            iv_ruleInterval=ruleInterval();

            state._fsp--;

             current =iv_ruleInterval; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleInterval562); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleInterval"


    // $ANTLR start "ruleInterval"
    // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:281:1: ruleInterval returns [EObject current=null] : ( () ( ( (lv_Min_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_Max_3_0= RULE_INT ) ) ) ) ;
    public final EObject ruleInterval() throws RecognitionException {
        EObject current = null;

        Token lv_Min_1_0=null;
        Token otherlv_2=null;
        Token lv_Max_3_0=null;

         enterRule(); 
            
        try {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:284:28: ( ( () ( ( (lv_Min_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_Max_3_0= RULE_INT ) ) ) ) )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:285:1: ( () ( ( (lv_Min_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_Max_3_0= RULE_INT ) ) ) )
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:285:1: ( () ( ( (lv_Min_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_Max_3_0= RULE_INT ) ) ) )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:285:2: () ( ( (lv_Min_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_Max_3_0= RULE_INT ) ) )
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:285:2: ()
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:286:5: 
            {

                    current = forceCreateModelElement(
                        grammarAccess.getIntervalAccess().getIntervalAction_0(),
                        current);
                

            }

            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:291:2: ( ( (lv_Min_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_Max_3_0= RULE_INT ) ) )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:291:3: ( (lv_Min_1_0= RULE_INT ) ) otherlv_2= '..' ( (lv_Max_3_0= RULE_INT ) )
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:291:3: ( (lv_Min_1_0= RULE_INT ) )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:292:1: (lv_Min_1_0= RULE_INT )
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:292:1: (lv_Min_1_0= RULE_INT )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:293:3: lv_Min_1_0= RULE_INT
            {
            lv_Min_1_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleInterval614); 

            			newLeafNode(lv_Min_1_0, grammarAccess.getIntervalAccess().getMinINTTerminalRuleCall_1_0_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getIntervalRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"Min",
                    		lv_Min_1_0, 
                    		"INT");
            	    

            }


            }

            otherlv_2=(Token)match(input,15,FOLLOW_15_in_ruleInterval631); 

                	newLeafNode(otherlv_2, grammarAccess.getIntervalAccess().getFullStopFullStopKeyword_1_1());
                
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:313:1: ( (lv_Max_3_0= RULE_INT ) )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:314:1: (lv_Max_3_0= RULE_INT )
            {
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:314:1: (lv_Max_3_0= RULE_INT )
            // ../fr.upmc.pstl/src-gen/fr/upmc/pstl/parser/antlr/internal/InternalMyDsl.g:315:3: lv_Max_3_0= RULE_INT
            {
            lv_Max_3_0=(Token)match(input,RULE_INT,FOLLOW_RULE_INT_in_ruleInterval648); 

            			newLeafNode(lv_Max_3_0, grammarAccess.getIntervalAccess().getMaxINTTerminalRuleCall_1_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getIntervalRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"Max",
                    		lv_Max_3_0, 
                    		"INT");
            	    

            }


            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleInterval"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleModel_in_entryRuleModel75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleModel85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleType_in_ruleModel130 = new BitSet(new long[]{0x0000000000000802L});
    public static final BitSet FOLLOW_ruleType_in_entryRuleType166 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleType176 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleType213 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleType230 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleType247 = new BitSet(new long[]{0x0000000000000060L});
    public static final BitSet FOLLOW_ruleSpec_in_ruleType268 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleType280 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleSpec_in_entryRuleSpec316 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSpec326 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleInterval_in_ruleSpec372 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnum_in_ruleSpec399 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleEnum_in_entryRuleEnum435 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleEnum445 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleEnum491 = new BitSet(new long[]{0x0000000000004002L});
    public static final BitSet FOLLOW_14_in_ruleEnum503 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleEnum514 = new BitSet(new long[]{0x0000000000004002L});
    public static final BitSet FOLLOW_ruleInterval_in_entryRuleInterval552 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleInterval562 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleInterval614 = new BitSet(new long[]{0x0000000000008000L});
    public static final BitSet FOLLOW_15_in_ruleInterval631 = new BitSet(new long[]{0x0000000000000040L});
    public static final BitSet FOLLOW_RULE_INT_in_ruleInterval648 = new BitSet(new long[]{0x0000000000000002L});

}